Disclosed herein are methods of reading the cells of a memory and related memory devices, memory controllers and memory systems.
Various physical phenomena occurring in flash memories result in corruption of the stored information. These phenomena include programming noises, read noises, charge leakage over time, wearing of the memory cells due to program and erase cycles etc. In order to allow reliable operation of a flash memory under these conditions, redundant data are stored together with the information, allowing one to correct the errors that corrupted the stored information.
An efficient scheme for inferring the information stored in a flash memory from the read data should provide maximal error correction capability (i.e. allow inferring the stored information under the most severe flash memory noise conditions possible given that a fixed amount of redundant data is used). This allows efficient utilization of the flash memory because a minimal amount of redundancy needs to be used in order to provide reliable storage under given flash memory noise conditions.
Conventionally, the following solutions to this problem have been applied:
1) Tracking Cell Voltage Distributions (CVD)
The statistical distribution of the threshold voltages (or the read voltages) of programmed cells is not fixed for all cells and is not fixed over time. The CVD may change between devices, blocks or pages. The CVD can change as a function of threshold voltages of neighboring cells along the word line (WL) or bit line (BL) due to cross coupling effects or to program disturb (PD) effects More importantly, the CVD can change over time, due to wearing of the cells by program/erase cycles and due to charge leakage. Knowing the CVD of the cell population to which a read cell belongs is important for several reasons:                A. The CVD can be used for determining optimal reading thresholds that should be used when reading the cell, which will result in a minimal error probability in determining the programmed cell state.        B. The CVD can be used for calibrating Error Correction Code (ECC) parameters and inputs—computing accurate bit estimations which are used as an input for a soft ECC decoder requires knowing the actual CVD model and parameters. Moreover, the CVD provides an indication of the flash memory noises that affect the cell and the expected cell error rate (i.e. the probability that the cell is read at a state different from the state it was programmed to).This can be used in order to determine the required decoding mode, as taught for example in US Patent Application Publication No. 2007/0124652 and in U.S. patent application Ser. No. 12/124,192, and in order to determine the required reading resolution (higher reading resolution incurs a time and energy consumption penalties and is not required if low error probability is expected).        
Various conventional schemes for CVD tracking are known. CVD tracking schemes for compensating charge leakage effects due to program/erase wearing and time are described in U.S. patent application Ser. No. 11/941,945. These schemes can be performed in a “blind” manner in which the cells' programmed states are unknown and CVD parameters estimation is done by analyzing the empirical histogram of read voltages of a group of cells (for example the cells of one page). Alternatively, CVD parameter estimation can be performed based on reference cells that are programmed to known states and are assumed to have the same CVD as the data cells A disadvantage of the use of reference cells is that it requires allocating specific cells for CVD tracking which cannot be used for storing data. CVD tracking schemes for compensating the electric field effect of neighboring cells are described in U.S. patent application Ser. No. 11/860,553 and in U.S. patent application Ser. No. 12/363,554. In these schemes the parameters of the CVD of a cell are updated according to the read to voltages of neighboring cells.
2) Compute Soft Bit Estimations
State of the art ECCs can utilize reliability information on the stored bits in order to improve error correction capability. Such “soft” bit estimations can be computed based on knowing the CVD (i.e. a statistical model for CVD) and its parameters). The more accurately the CVD is estimated, the more accurate the soft bit estimations can be. This is why CVD tracking is important. The “soft” information also becomes more accurate when higher resolution reading is used (i.e. when the cell threshold voltage is determined more accurately). Conventional soft bit estimation is described in US Patent Application Publication No. 2007/0086239, in U.S. patent application Ser. No. 11/941,945 and in U.S. patent application Ser. No. 11/860,553.
3) Efficient ECC
Using an efficient ECC that can utilize soft information and that allows correcting maximal number of bit errors with a given ECC redundancy. Examples of conventional ECC use is taught in US 2007/0124652 and in U.S. patent application Ser. No. 12/124,192.
Conventionally, the three mechanisms described above are applied separately, one after another, i.e. first CVD tracking is performed, then a page is read based on the CVD parameters, then soft estimations of the stored bits are computed based on the CVD parameters, and finally ECC decoding is performed on the soft bit estimates.
To summarize, the conventional approach is:
1) CVD tracking computes CVD parameters based only on the read cell voltages.
2) Soft bit estimates for a given cell are computed based only on the read cell voltages and the estimated CVD parameters.
3) Estimates of the stored bits are computed using an ECC decoder which operates only on soft bit estimates.